package controles;

import java.util.ArrayList;
import java.util.List;

import contas.ContaEspecial;
import contas.ContaPoupanca;
import contas.ContaSimples;

import persistencia.DAOConta;
import persistencia.DAOContaInterface;

public class ControleConta {
	
	private DAOContaInterface daoConta = null;
	
	public ControleConta()throws Exception{
		daoConta = new DAOConta();
	}
	public void incluirContaSimples(String nome,String numConta,String saldo,String tempoDeConta) throws Exception{
		ContaSimples conta = new ContaSimples();
		conta.setNome(nome);
		conta.setNumConta(Integer.parseInt(numConta));
		conta.setSaldo(Double.parseDouble(saldo));
		conta.setTempoDeConta(Integer.parseInt(tempoDeConta));
		
		daoConta.incluirContaSimples(conta);
	
	}
	
	public void excluirContaSimples(String numConta) throws Exception{
		daoConta.excluirContaSimples(Integer.parseInt(numConta));
	}
	
	public void alterarContaSimples(String nome,String numConta,String saldo,String tempoDeConta) throws Exception{
		ContaSimples conta = new ContaSimples();
		conta.setNome(nome);
		conta.setNumConta(Integer.parseInt(numConta));
		conta.setSaldo(Double.parseDouble(saldo));
		conta.setTempoDeConta(Integer.parseInt(tempoDeConta));
		daoConta.alterarContaSimples(conta);
	}
	
	public List<String> consultarContaSimples(String numConta) throws Exception{
		List<String> listaCampos = new ArrayList<String>();
		ContaSimples conta = daoConta.consultarContaSimples(Integer.parseInt(numConta));
		listaCampos.add(conta.getNumConta()+"");
		listaCampos.add(conta.getNome());
		listaCampos.add(conta.getSaldo()+"");
		listaCampos.add(conta.getTempoDeConta()+"");
		listaCampos.add(conta.getSaldo()+"");
		
		return listaCampos;
	}

	public void incluirContaEspecial(String nome,String numConta,String saldo,String limite,String tempoDeConta) throws Exception{
		ContaEspecial conta = new ContaEspecial();
		conta.setNome(nome);
		conta.setNumConta(Integer.parseInt(numConta));
		conta.setSaldo(Double.parseDouble(saldo));
		conta.setLimite(Double.parseDouble(limite));
		conta.setTempoDeConta(Integer.parseInt(tempoDeConta));
		
		daoConta.incluirContaEspecial(conta);
	
	}
	public void excluirContaEspecial(String numConta) throws Exception{
		daoConta.excluirContaEspecial(Integer.parseInt(numConta));
	}
	public void alterarContaEspecial(String nome,String numConta,String saldo,String tempoDeConta,String limite) throws Exception{
		ContaEspecial conta = new ContaEspecial();
		conta.setNome(nome);
		conta.setNumConta(Integer.parseInt(numConta));
		conta.setSaldo(Double.parseDouble(saldo));
		conta.setTempoDeConta(Integer.parseInt(tempoDeConta));
		conta.setLimite(Double.parseDouble(limite));
		daoConta.alterarContaEspecial(conta);
	}
	public List<String> consultarContaEspecial(String numConta) throws Exception{
		List<String> listaCampos = new ArrayList<String>();
		ContaEspecial conta = daoConta.consultarContaEspecial(Integer.parseInt(numConta));
		listaCampos.add(conta.getNome());
		listaCampos.add(conta.getNumConta()+"");
		listaCampos.add(conta.getSaldo()+"");
		listaCampos.add(conta.getTempoDeConta()+"");
		listaCampos.add(conta.getLimite()+"");
		listaCampos.add(conta.InformarSaldoTotal()+"");
		
		return listaCampos;
	}
	public void incluirContaPopanca(String nome,String numConta,String saldo,String taxa,String tempoDeConta) throws Exception{
		ContaPoupanca conta = new ContaPoupanca();
		conta.setNome(nome);
		conta.setNumConta(Integer.parseInt(numConta));
		conta.setSaldo(Double.parseDouble(saldo));
		conta.setTaxa(Double.parseDouble(taxa));
		conta.setTempoDeConta(Integer.parseInt(tempoDeConta));
		
		daoConta.incluirContaPoupanca(conta);
	}
	public void excluirContaPopanca(String numConta) throws Exception{
		daoConta.excluirContaPoupanca(Integer.parseInt(numConta));
	}
	public void alterarContaPoupanca(String nome,String numConta,String saldo,String tempoDeConta,String taxa) throws Exception{
		ContaPoupanca conta = new ContaPoupanca();
		conta.setNome(nome);
		conta.setNumConta(Integer.parseInt(numConta));
		conta.setSaldo(Double.parseDouble(saldo));
		conta.setTaxa(Double.parseDouble(taxa));
		conta.setTempoDeConta(Integer.parseInt(tempoDeConta));
		
		daoConta.alterarContaPoupanca(conta);
	}
	public List<String> consultarContaPopanca(String numConta) throws Exception{
		List<String> listaCampos = new ArrayList<String>();
		ContaPoupanca conta = daoConta.consultarContaPoupanca(Integer.parseInt(numConta));
		listaCampos.add(conta.getNome());
		listaCampos.add(conta.getNumConta()+"");
		listaCampos.add(conta.getSaldo()+"");
		listaCampos.add(conta.getTempoDeConta()+"");
		listaCampos.add(conta.getTaxa()+"");
		listaCampos.add(conta.InformarSaldoTotal()+"");
		
		return listaCampos;
	}
	
}
